The invention is in the field of computer graphics, and more particularly concerns the operation of diverse graphics processors in response to a single graphics application program written in a certain programming language, the response of any graphics processor afforded by means of a set of common language linkages that translate the application program functions into sets of commands and data for the processor.
As is known in the art, a graphics processor is a software construct embracing a set of callable subroutines, functions, or commands that provides an interface between graphics application programs written in device-independent languages and a graphics output device that produces graphs defined by the application programs. The graphics processor constitutes an intermediary between an application program written in a high-level, user-comprehendible programming language and device-dependent graphics device processors, which respond to sets of low-level instructions. The volume by J. Foley and A. Van Dam, entitled "Fundamentals Of Interactive Computer Graphics," Addison-Wesley, 1982, 1984 is instructive in the characteristics and operations of graphics processors.
In the past, the structure and operation of a graphics processor have had to take into account the characteristics of the software and hardware context within which the processor operates. Thus, a representative graphics processor is the graphics data display manager (GDDM) processing subsystem designed for operation in the main frame computer environment exemplified by the System 370 computing system available from IBM. The GDDM provides a graphics-output-device-independent interface to an application programmer, receives application language function or subroutine calls which set processor operational conditions and activate processor graphical primitive commands, and operates an output device driver, which produces graph representations corresponding to the called commands and having attributes determined by the set conditions.
Another graphics processor is represented by the proposed Computer Graphics Interface (CGI) Standard X3.122 promulgated by ANSI. The Computer Graphics Interface defines the characteristics of a graphics processor which stands between output device-specific drivers and output device-independent application processes in a graphics environment. For application programs, the CGI processor performs receiving and operating functions that correspond to those of the GDDM. However, the CGI assumes a basic set of graphics primitives such as shapes, lines, and text characters, and associates with each set of primitives a respective set of primitive attributes such as color, line thickness, and character type. The CGI receives the application program graphics command and attribute information in the form of one or more standard data objects called "metafiles." A metafile is a device-independent description of a graph or graph portion in terms of graphical primitive elements such as lines or text and primitive attributes such as line color and text style. The metafiles received by the processor cause it to operate a specified output device driver. An IBM product, the personal computer AT/370, has available a graphics processor referred to as the Virtual Device Interface (VDI), which embodies the CGI Standard.
It will be evident to those skilled in the art that the subroutines employed by a GDDM-type processor to transform application program statements to graphical primitive commands and attributes differ from those of a CGI processor. Other differences between the processors can exist. For example, although both the GDDM and the VDI embodiments employ point coordinates in line drawing and object positioning, the processors use different structures to organize the data points: the GDDM point array is organized as (x.sub.1, x.sub.2, . . . ,x.sub.n), (y.sub.1,y.sub.2, . . . ,y.sub.n), while the VDI structures its points in the form (x.sub.1,y.sub.1), . . . ,(x.sub.n,y.sub.n). Further distinctions include: different character codes; different color representation and indexing; and different forms of representation for graphical primitive attributes.
From the standpoint of programmer efficiency, it would be desirable to enable different graphics processors to respond uniformly to a single high-level graphics application language program. This would permit an application programmer to create a graphics program using a single set of statements, which would result in the creation of identical graphs using any one of a number of different graphics processing facilities. This property is commonly called portability. However, to date, application programmers must construct graphics programs that are tailored to the specific characteristics of the graphics processing service embodied in the computing facility available to the programmer. Thus, even when the programmer employs the same graphics application language to operate different graphic processing services, the programmer must construct an application program tailored to the specific graphics processor. In this regard, then, graphics application programs are not portable between different processing facilities, even if expressed in the same language.
Therefore, there is an evident need for a construct that will provide a mode of establishing linkages to any of a variety of different graphics processors from a single graphics application program rendered in a particular programming language.